In order to electronically distribute a software application to a plurality of destinations, the software application is often divided into one or more software application packages. The software application packages are electronically distributed from a resource of the software application to the destinations. The destinations include, but are not limited to desktop and laptop personal computers, personal digital assistants (PDAs), cellular telephones, etc. The destinations are generically referred to herein as workstations or clients. The software application packages are reassembled at the destinations prior to the execution of the software application.
Many client-server systems for electronically distributing a software application divided into one or more software application packages to a plurality of clients are hierarchical systems with several tiers. An exemplary client-server hierarchical system comprises, for example, a Central System Management Server site server (Central SMS site server), a plurality of child SMS site servers, a plurality of Distribution servers, and a plurality of clients. At the apex of the hierarchical system is the Central SMS site server that stores the one or more software application packages that make up the software application. The Central SMS site server is usually located at the resource, i.e., the location where the software application is divided into a plurality of software application packages for distribution to the clients. The plurality of child SMS site servers and a plurality of Distribution servers each located at different geographical locations that are different from the location of the Central SMS site server form a tier (first tier) located below the apex of the hierarchical system. A child SMS site server and a Distribution server are machines that have a server class operating system. A difference between a child SMS site server and a Distribution server is that the child SMS site server usually has a greater number of processors with higher processing speeds than the Distribution server. As a result, a child SMS site server is usually capable of servicing more clients than a Distribution server. Each first tier server, i.e., child SMS site server and Distribution server is connected via a first network to the Central SMS site server and via a second network to the other first tier servers. The first and second networks may be a Wide Area Network (WAN), a Local Area Network (LAN), or a combination thereof. Further, the second network may be part of the first network, or an entirely separate network. Each first tier server is connected via a third network to a plurality of clients with a same network address or similar common identifier that form the lowest tier (second tier) of the hierarchical system. The network connecting each first tier server to the plurality of clients with the same network address may also be a WAN, LAN, or combination thereof. Further, the third network may be part of the first network, second network, or an entirely separate network.
FIG. 1A is a pictorial diagram illustrating an exemplary prior art client-server hierarchical system 100 of the type described above. In this example, Central SMS site server (SMS1) 101 is physically closer to first child SMS site server (SMS2) 102 than to a second child SMS site server (SMS3) 103. Similarly, SMS2 is physically closer to a first Distribution server (DP1) 104 than to second or third Distribution servers (DP2 or DP3) 105 and 106, which are closer to SMS3. Similarly, a plurality of clients 107 with the same network address are physically closer to DP1 than to SMS2, SMS3, DP2, or DP3. For the sake of simplicity, FIG. 1A only shows the shortest paths taken by a software application package (shown by solid arrow lines) and by an associated plurality of software application package policies (shown by dashed arrow lines) to and from SMS1 and 107. The paths of the solid and dashed arrows are marked 1-5 and are described below. It is to be understood that the software application package and the plurality of software application package policies may take paths (not shown) to and from, for example SMS1, SMS3, DP3, and the plurality of clients 107, or SMS1, SMS3, DP1, and the plurality of clients 107, or any other suitable combination thereof. Further, for the sake of simplicity, the first, second, and third networks are not physically shown in FIG. 1A, but it is to be understood that the arrows indicating the paths taken by the software application package (arrows marked 1, 2, and 5), and the paths taken by the plurality of software application package policies (arrows marked 3 and 4) to and from, for example, SMS1, SMS2, DP1, and the plurality of clients 107 are paths taken via suitable networks, e.g., the first, second, or third networks described above. Furthermore, for the sake of simplicity, only one path (arrow marked 5) is shown to collectively indicate the plurality of paths from each of the plurality of clients 107 that pull a software application package from DP1. It is also to be understood that the second network connecting the plurality of clients 107 to DP1 is part of the network connecting DP1 to SMS2, and the network connecting SMS2 to SMS1.
Returning to FIG. 1A, the Central SMS site server (SMS1) 101 is at the apex of the hierarchical system. As discussed above, SMS1 is the resource from where a software application, divided into a plurality of software application packages, is electronically distributed to a plurality clients with the same network address or similar common identifier. SMS1 is connected via a WAN, LAN, or combination thereof network (not physically shown) to the first tier child SMS site server (SMS2) 102 located at a second geographical location, and the second first tier child SMS site server (SMS3) 103 located at a third geographical location. SMS2 and SMS3 are each connected via a WAN, LAN, or combination thereof network (not physically shown) to each other and to the first tier Distribution server (DP1) 104 located at a fourth geographical location, the second first tier Distribution server (DP2) 105 located at a fifth geographical location, and the third first tier Distribution server (DP3) 106 located at a sixth geographical location. It should be noted that there can be more than one first tier Distribution server per geographical location, if necessary. DP1, DP2, and DP3 are each connected via a WAN, LAN, or combination thereof network (not shown) to the plurality of clients (C1, C2, . . . , CN) 107 located at a seventh geographical location. The plurality of clients 107 have the same network address or similar common identifier and form the second tier of the hierarchical system 100.
In an exemplary hierarchical client-server system 100 of the type illustrated in FIG. 1A, a software application running on the Central SMS site server, i.e., SMS1 “pushes” a software application package (marked by arrow “1”) to the first tier child SMS site server, i.e., SMS2. As mentioned above, the software application package is also “pushed” by SMS1 to the second first tier child SMS site server, i.e., SMS3, but, as noted above, the path taken by the software application package from SMS1 to SMS3 is not shown for the sake of simplicity. A software application running on SMS2 “pushes” a copy of the software application package received from SMS1 (marked by arrow “2”) to the first tier Distribution server, i.e., DP1. The copy of the software application package also may be “pushed” by SMS2 to other first tier Distribution servers, i.e., DP2 and DP3, or “pushed” by SMS3 to each of first tier Distribution servers, i.e., DP1, DP2, and DP3, but, as noted above, these paths are not shown for the sake of simplicity. A software application running on SMS1 “pushes” a plurality of policies associated with the software application package (marked by arrow “3”) to the first tier child SMS site server, i.e., SMS2. As mentioned above, the plurality of software application package policies are also “pushed” by the software application running on SMS1 to the second first tier child SMS site server, i.e., SMS3, but the path is not shown for the sake of simplicity. A software application running on each of the plurality of clients 107, i.e., on C1, C2, . . . , CN sends a signal at predetermined intervals (not shown) to query SMS2. The signal is sent to query whether SMS2 has one or more software application packages that the clients need. It should be noted, that the signal is also sent at the predetermined intervals (not shown) by the software application running on each of C1, C2, . . . , CN to the other child SMS site server in the hierarchical system, i.e., SMS3. Once the plurality of software application package policies are received by SMS2 (when the arrow marked “3” is completed), the software application on each of C1, C2, . . . , CN “pulls” the plurality of the software application package policies (marked by arrow “4”) from SMS2. It should be noted that since the signal is also sent by the software application running on each of C1, C2, . . . , CN to SMS3, the software application running on each of C1, C2, . . . , CN could also “pull” the plurality of software application policies from SMS3. But as mentioned above, for the sake of simplicity, only the shortest path taken by the plurality of policies of the software application package is shown in FIG. 1A. Next, the software application running on each of C1, C2, . . . , CN determines if the plurality of software application package policies pulled from SMS2 is for a software application package needed by these clients. If the plurality of software application package policies pulled from SMS2 is for a software application package that the clients need, a software application running on the clients “pulls” the software application package from DP1 (marked by arrow “5”). It should be noted again, that the software application package could be “pulled” from the other Distribution servers in the client-server hierarchical system 100, i.e., DP2 or DP3. But as mentioned above, for the sake of simplicity, only the shortest path taken by the software application package is shown in FIG. 1A.
FIG. 1B is a timeline diagram of the exemplary paths taken by the software application package and the plurality of software application package policies, as shown in FIG. 1A and described above. For the sake of simplicity, FIG. 1B illustrates the timeline of the paths for one software application package and the policy associated with the software application package for a single client. Further, the exemplary timeline diagram illustrated in FIG. 1B comprises a Central SMS site server, a single child SMS site server, and a single Distribution server. It should be noted, however, that the paths taken by the software application and the plurality of associated software application policies and the timing sequence for these paths will be similar if more than one software application package (and hence more than one plurality of associated software application package policies) exists, or if there is more than one child SMS site server, Distribution server, or client.
Returning to FIG. 1B, the Central SMS site server “pushes” the software application package to the child SMS site server when the software application package is ready to be electronically distributed to the plurality of clients. The “push” of the software application package by the Central SMS site server is shown by the arrow marked “1.” Next, a copy of the software application package is “pushed” by the child SMS server to the Distribution server. The “push” of the software application package by the child SMS server to the Distribution server is shown by the arrow marked “2.” Next, the plurality of associated software application package policies are “pushed” by the Central SMS site server to the child SMS site server. The “push” of the plurality of software application package policies by the Central SMS site server to the child SMS site server is shown by the arrow marked “3.” Before the “push” of the plurality of software application package policies by the Central SMS site server to the child SMS site server is completed, the client may send a query at a pre-determined time interval to the child SMS site server to query if the child SMS site server has the software application package. Even though the Distribution server has the software application package (on the completion of the arrow marked “2”), the software application package cannot be distributed to the client prior to the child SMS site server receiving the associated software application package policies. Once the arrow marked “3” is completed, the plurality of software application package policies is “pulled” by the client from the child SMS site server. The “pull” of the plurality of software application package policies is shown by the arrow marked “4.” Upon completion of the policy pulling, since the software application is already “hosted” on the Distribution server (on the completion of the arrow marked “2”), a querying client can “pull” the software application package from the Distribution server. The “pull” of the software application package from the Distribution server by the client is shown by the arrow marked “5.”
There are several drawbacks with the exemplary prior art method described above and illustrated in FIGS. 1A and 1B. First, the software application packages are distributed from the Central SMS site server to the plurality of Distribution servers via one of a plurality of child SMS site servers when the software application packages are ready to be electronically distributed. This means that there may be an unnecessary usage of disk space on the Distribution servers and the child SMS site servers before clients decide they need to pull the software application packages. If clients do not need the software application packages, there may be no need to store them on the child SMS site servers and/or Distribution servers. For example, since clients pull the software application packages from a Distribution server, there may be situations where none of the clients serviced by a Distribution server need to pull the software application packages. This means that the software application packages occupy disk space on the Distribution server that could be used for other purposes. Second, since each client pulls the software application packages, there could be a situation when a plurality of clients with the same network address or similar common identifier decide to pull the software application packages at the same time. Since the plurality of clients have the same network address or similar common identifier, the plurality of clients each pull the software application packages from the same Distribution server using the same network. Since the plurality of clients are pulling from the same Distribution server at the same time and over the same network, the time to download the packages is increased.